import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'
import AppLayout from '@/layout/AppLayout.vue'
import productnRouter from './modules/product'
import mediaRouter from './modules/media'
import orderRouter from './modules/order'
import permissionRouter from './modules/permission'
import projectRouter from './modules/project'
import cmsRouter from './modules/cms'
import { store } from '@/store'
// 加载进度条
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'

const routes: RouteRecordRaw[] = [
  {
    path: '/',
    component: AppLayout,
    meta: {
      requiresAuth: true
    },
    children: [
      {
        path: '',
        name: 'home',
        component: () => import('../views/home/index.vue'),
        meta: {
          title: '首页'
        }
      },
      productnRouter,
      mediaRouter,
      orderRouter,
      permissionRouter,
      projectRouter,
      cmsRouter
    ]
  },
  {
    path: '/login',
    name: 'login',
    component: () => import('../views/login/index.vue')
  },
  {
    path: '/register',
    name: 'register',
    component: () => import('../views/register/index.vue')
  }

]

const router = createRouter({
  // 4. 内部提供了 history 模式的实现。为了简单起见，我们在这里使用 hash 模式。
  history: createWebHashHistory(),
  // `routes: routes` 的缩写
  routes
})

router.beforeEach((to, from) => {
  nprogress.start() // 开始加载进度条
  // 而不是去检查每条路由记录
  // to.matched.some(record => record.meta.requiresAuth)
  if (to.meta.requiresAuth && !store.state.user) {
    // 此路由需要授权，请检查是否已登录
    // 如果没有，则重定向到登录页面
    return {
      path: '/login',
      // 保存我们所在的位置，以便登录成功在返回回来
      query: { redirect: to.fullPath }
    }
  }
})

// // 全局开始进度条
// router.beforeEach(() => {
//   nprogress.start() // 开始加载进度条
// })

// 全局结束
router.afterEach(() => {
  nprogress.done() // 加载结束进度条
})

export default router
